<?php
/**
 * @file validate.php
 *
 * Todas las funciones de validación
 *
 * @author Dyr technologies
 * @version V 1.0
 * @date 15/05/06
 *
 *  Part of the CEFIRO dynamic web framework project
 *
 *  Copyright (C) 2007  Dyr technologies http://dyrtech.com.ve/cefiro/license.txt
 *
 *  This program is free software: you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation, either version 3 of the License, or
 *  (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

//This is particular to our current project, please remove or change for other projects
define('SESSION_DATE','../../../sigelab/web/xajaxcom/actualizar_acceso.php');
$dominios = '../../../sigelab/web/main/validar/dominios.php';

function zvalidatom($aArgs){
  require_once(SESSION_DATE);
  $buffer = validar($aArgs[3],$aArgs[2]);
  addAssign("m_".$aArgs[0],"innerHTML",$buffer);
  if($buffer == "")
  addScript("eval(".$aArgs[4].")");
  else
  addScript("eval(".$aArgs[5].")");
  return processResponse();
}

function zvalidateform($aFormValues){
  require_once(SESSION_DATE);
  $keys = array_keys($aFormValues);
  for ($i = 1 ; $i < count($keys) ; $i++){
    $nombre = $keys[$i-1];
    $valor = $keys[$i];
    if ( "d_".$nombre === $valor){
      $i++;
      $dominios = $aFormValues[$valor];
      $closepar = 0;
      $newdom = '';
      $openpar = strpos($dominios,'(');
      while ($openpar !== false) {
        $newdom .= substr($dominios,$closepar,$openpar-$closepar+1);
        $closepar = strpos($dominios,')',$openpar);
        $strargs = substr($dominios,$openpar+1,$closepar-$openpar-1);
        if (strlen($strargs) > 0){
          $arrargs = explode(',',$strargs);
          for ($val = 0 ; $val < count($arrargs)-1 ; $val++)
          	$newdom .= str_replace(':','[COLON]',$aFormValues[$arrargs[$val]]).',';
          $newdom .= str_replace(':','[COLON]',$aFormValues[$arrargs[$val]]);
        }
        $openpar = strpos($dominios,'(',$closepar);
      }
      $newdom .= substr($dominios,$closepar);
      $buffer = validar($newdom,$aFormValues[$nombre]);
      addAssign("m_".$nombre,"innerHTML",$buffer);
      if ($buffer !== "" && !isset($ban))
      $ban = $nombre;
    }
  }
  //$form = @$aFormValues['form']; // viene de getFormValues...
  if (isset($ban)){
    if (isset($aFormValues['form']))
      addScript("zajax.$('".$aFormValues['form']."').$ban.focus()");
    else
      addScript("zajax.$('$ban').focus()");
  } else {
    $sCallbackFile = @$aFormValues['sCallbackFile'];
    $sCallbackFcn = @$aFormValues['sCallbackFcn'];
    $sJscriptFcn = @$aFormValues['sJscriptFcn'];
    if (isset($sCallbackFile ) && isset($sCallbackFcn)){
      define('VALID_FILE',$sCallbackFile);
      include_once(VALID_FILE);
      return call_user_func($sCallbackFcn,$aFormValues);
    } elseif (isset($sJscriptFcn))
      addScript("eval('$sJscriptFcn')");
    elseif (isset($aFormValues['form']))
      addScript("zajax.$('".$aFormValues['form']."').submit()");
  }
  return processResponse();
}

function showStatus($Args){
  if (!defined('CEFIRO')) define("CEFIRO",substr(__FILE__,0,strpos(__FILE__,"cefiro"))."cefiro/widgets/cefiro.php");
  require_once(CEFIRO);
  $sDonde = $Args[0];
  $sTipo = $Args[1];
  $sMensaje = $Args[2];
  $sFocus = "";
  $sAncla = "msg-notificacion";
  $sAlign = "center";
  if (count($Args) > 3 && $Args[3] != '')
  $sFocus = $Args[3];
  if (count($Args) > 4 && $Args[4] != '')
  $sAncla = $Args[4];
  if (count($Args) > 5 && $Args[5] != '')
  $sAlign = $Args[5];
  $smarty->assign('tipo',$sTipo);
  $smarty->assign('notificacion',$sMensaje);
  $smarty->assign('align',$sAlign);
  $smarty->assign('path',BASE_URL."cefiro/lib/zajax/status/");
  $smarty->template_dir = dirname(__FILE__).'/status/';
  addAssign($sDonde, "innerHTML", $smarty->fetch('status.tpl'));
  addScript("zajax.$('$sAncla').focus();");
  if ($sFocus != "")
  addScript("zajax.$('$sFocus').focus();");
  return processResponse();
}

/**
 * Permite comparar dos fechas
 *
 * @param string $fecha1
 * @param string $fecha2
 * @return int Valor de comparacion
 */
function comparedates($fecha1, $fecha2){
  list($dia1,$mes1,$ano1)=split("/",$fecha1);
  list($dia2,$mes2,$ano2)=split("/",$fecha2);
  return (mktime(0,0,0,$mes1,$dia1,$ano1) - mktime(0,0,0, $mes2,$dia2,$ano2));
}

function validarFecha($args) {
  require_once(SESSION_DATE);
  $fechadesde = $args[0];
  $fechahasta = $args[1];
  $msg = $args[2];
  $accion = $args[3];
  $diferencia = comparedates($fechahasta, $fechadesde);
  if ($diferencia < 0) {
    addScript("fcnNotificacion('idnotificacion','Error', '$msg');");
    addScript("$accion");
  }
  return processResponse();
}

function validar($tipo,$campo)
{
  global $dominios;
  $repetir=split(":",$tipo);
  $num=count($repetir);
  $msg='';
  $var = '';
  for($i=0;$i< $num; $i++) {
    $tipo=$repetir[$i];
    $public = "";
    $var0 = "";
    $var1 = "";
    $closingpar = strrpos($tipo,')');
    if ( $closingpar !== false ) {
      //require_once(dirname(__FILE__).'/utils.php');
      //$inc_path = get_rel(ROOT.HOME.'/'.substr($tipo,$closingpar+1),__FILE__);
      $inc_path = ROOT.HOME.'/'.substr($tipo,$closingpar+1);
      @define('INCLUDE_DOMAIN',$inc_path);
      include_once(INCLUDE_DOMAIN);
      $tipo = substr($tipo,0,$closingpar+1);
      $closingpar = strpos($tipo,')');
      while ( $closingpar !== false ) {
        $leftpart = substr($tipo,0,$closingpar);
        $openingpar = strpos($leftpart,'(');
        $sFnc = substr($leftpart,0,$openingpar);
        $sPar = str_replace('[COLON]',':',$campo.','.substr($leftpart,$openingpar+1));
        $aArr = explode(',',$sPar);
        $sMes = call_user_func($sFnc,$aArr);
        $var.= $sMes . (strlen($sMes) > 0?'<br>':'');
        $msg = "Error en validacion especial...";
        $tipo = substr($tipo,$closingpar+1);
        $closingpar = strpos($tipo,')');
      }
    } else {
      switch($tipo) {
        case 'D1':
          $var.=validar_D1($campo);
          break;
        case 'D2':
          $var.=validar_D2($campo);
          break;
        case 'D3':
          $var.=validar_D3($campo);
          break;
        case 'D4':
          $var.=validar_D4($campo);
          break;
        case 'D5':
          $var.=validar_D5($campo);
          break;
        case 'D6':
          $var.=validar_D6($campo);
          break;
        case 'D7':
          $var.=validar_D7($campo);
          break;
        case 'D8':
          $var.=validar_D8($campo);
          break;
        case 'D9':
          $var.=validar_D9($campo);
          break;
        case 'D10':
          $var.=validar_D10($campo);
          break;
        case 'D11':
          $var.=validar_D11($campo);
          break;
        case 'D12':
          $var.=validar_D12($campo);
          break;
        case 'D13':
          $var.=validar_D13($campo);
          break;
        case 'D14':
          $var.=validar_D14($campo);
          break;
        case 'D15':
          $var.=validar_D15($campo);
          break;
        case 'D16':
          $var.=validar_D16($campo);
          break;
        case 'D17':
          $var.=validar_D17($campo);
          break;
        case 'D18':
          $var.=validar_D18($campo);
          break;
        case 'D19':
          $var.=validar_D19($campo);
          break;
        case 'D20':
          $var.=validar_D20($campo);
          break;
        case 'D21':
          $var.=validar_D21($campo);
          break;
        case 'D22':
          $var.=validar_D22($campo);
          break;
        case 'A1':
          $var1=validar_A1(trim($campo));
          $msg="Este campo no acepta un valor vacío.";
          break;
        case 'A2':
          $var1=validar_A2($campo);
          $msg="El correo electrónico debe estar compuesto de un nombre + @ + dominio.tipo";
          break;
        case 'A3':
          $var1=validar_A3($campo);
          break;
        case 'A4':
          $var1=validar_A4($campo);
          $msg="Contraseñas diferentes.";
          break;
        case 'A5':
          $var1=validar_A5($campo);
          $msg="Clave Inválida.";
          break;
        case 'A6':
          $var1=validar_A6($campo);
          break;
        case 'A7':
          $var1=validar_A7($campo);
          break;
        case 'A8':
          $var1=validar_A8($campo);
          break;
        case 'A9':
          $var1=validar_A9($campo);
          break;
        case 'A10':
          $var1=validar_A10($campo);
          $msg="Página web inválida.";
          break;
        case 'A11':
          $var1=validar_A11($campo);
          $msg="Teléfono inválido. Formatos validos: 0274-2548796/ +58-274-2548796/ 0058-274-2548796";
          break;
        case 'A12':
          $var1=validar_A12($campo);
          $msg="Fecha Inválida";
          break;
        case 'A13':
          $var1=validar_A13($campo);
          $msg="Código inválido";
          break;
        case 'A14':
          $var1=validar_A14($campo);
          $msg="Código inválido";
          break;
        case 'A15':
          $var1=validar_A15($campo);
          $msg="Código inválido";
          break;
        case 'T1':
          $var1=validar_T1($campo);
          $msg="Código inválido";
          break;
        case 'T2':
          $var1=validar_T2($campo);
          $msg="Código inválido";
          break;
        case 'T3':
          $var1=validar_T3($campo);
          $msg="Código inválido";
          break;
        case 'T4':
          $var1=validar_T4($campo);
          $msg="Código inválido";
          break;
        case 'T5':
          $var1=validar_T5($campo);
          $msg="Código inválido";
          break;
      }
    }
    if (!defined('CEFIRO')) define("CEFIRO",substr(__FILE__,0,strpos(__FILE__,"cefiro"))."cefiro/widgets/cefiro.php");
    require_once(CEFIRO);
    $path = BASE_URL."cefiro/lib/zajax/status";
    if($var != "") {
      $i=$num;
      $var0="<img class='img-puntero' border='0' src='$path/validar_error.gif' width='16' height'16' aling='middle' title='$msg' onclick=\"window.open('$dominios?tipo=$tipo#dom-$tipo','','width=460,height=563,screenX=300,screenY=50,resizable=no,menubar=no,toolbar=no,directories=no,location=no,scrollbars=yes,status=no')\">&nbsp;<span class='msg-notificar'>". "" ."</span>";
      $public = "";
    }
    if($var1 != "") {
      $i=$num;
      $var1="<img class='img-puntero' border='0' src='$path/validar_informacion.gif' width='16' height'16' aling='middle' title='$msg' onclick=\"window.open('$dominios?tipo=$tipo#dom-$tipo','','width=460,height=563,screenX=300,screenY=50,resizable=no,menubar=no,toolbar=no,directories=no,location=no,scrollbars=yes,status=no')\">&nbsp;<span class='msg-notificar'>".$var1."</span>";
      $public = "";
      $var0 = "";
    }
    if($public != "") {
      $var1="<img class='img-puntero' border='0' src='$path/validar_error.gif' width='16' height'16' aling='middle' title='$msg' onclick=\"window.open('$dominios?tipo=$tipo#dom-$tipo','','width=460,height=563,screenX=300,screenY=50,resizable=no,menubar=no,toolbar=no,directories=no,location=no,scrollbars=yes,status=no')\">&nbsp;<span class='msg-notificar'>".$var1."</span>";
    }
  }
  $var2=$var0.$var1.$var;
  return($var2);
}



/// Validar D1
function validar_D1($campo)
// D1=EnteroLargo+: Entero largo solo positivo (unsigned long int del C++)
{
  $var="";
  $patron = "^[[:digit:]]+$";
  $patron1 = "^[-]+$";
  if ( $campo!="" && (eregi($patron, $campo) == false || $campo>32767 || eregi($patron1, $campo) == true))
  $var="Ingrese solo Entero positivo";
  return $var;
}

/// Validar D2
function validar_D2($campo)
{
  $var="";
  if($campo!="")
  {
    if ( ereg( "([0-9]{1,2})-([0-9]{1,2})-([0-9]{2})", $campo) or ereg( "([0-9]{1,2})/([0-9]{1,2})/([0-9]{4})", $campo))
    {
      $var="";
    } else {
      $var="Fecha Invalida";
    }
  }
  return($var);
}

/// Validar D3
function validar_D3($campo)
{
  // D3=Cadena(8) digitos y letras mayusculas: Cadenas de caracteres de longitud 8 donde solo
  // se aceptan letras mayusculas del alfabeto ASCII y numeros ({0..9}[{A..Z})
  $var="";
  $patron = "/[a-z]/";
  $patron1 = "/^[\w\á\é\í\ó\ú\Á\É\Í\Ó\Ú\ñ\Ñ\-]+$/i";
  if($campo!="")
  {
    if (preg_match($patron,$campo) == 1 or strlen($campo)>8 or preg_match($patron1,$campo) != 1)
    {
      //         $var="$texto Inválido";
      $var="Ingrese solo caracteres de longitud 8 digitos y letras en mayúsculas";
    }
  }
  return($var);
}

/// Validar D4
function validar_D4($campo)
{
  // D4= Cadena(32) solo letras, -, , espacio, : Cadenas de caracteres de longitud 32 donde solo
  // se aceptan del alfabeto ASCII letras, números y ciertos caracteres especiales como: guión,
  // apóstrofes, espacio y subrayado ({A..Z, a..z}[{0..9}[{?-?, ???, ?espacio?, ? ?})
  $var="";
  $patron = "/^[\w\-\s\_\á\é\í\ó\ú\'\ñ\Ñ\/.\'\"]+$/i";
  if($campo!="")
  {
    if (preg_match($patron,$campo) != 1 or strlen($campo)>32)
    {
      //         $var="$texto Inválido";
      $var="Ingrese solo caracteres de longitud 32 letras, - , ? , _ , ' , espacio";
    }
  }
  return($var);
}

/// validar D5
function validar_D5($campo)
{
  // D5=Entero+: Entero solo positivo (unsigned int del C++)
  $var="";
  $patron = "^[[:digit:]]+$";
  $patron1 = "[-]+$";
  if($campo!="")
  {
    if (eregi($patron, $campo)==false or eregi($patron1, $campo)==true)
    {
      //       $var="$texto Inválido";
      $var="Ingrese solo Entero positivo";
    }
  }
  return($var);
}

/// Validar D6
function validar_D6($campo)
{
  // D6= Moneda: Real con dos decimales antepuesto con Bs.
  $var="";
  $patron1 = "/[\-]/";
  $patron2 = "/[a-z]/";
  if($campo!="")
  {
    //    if(ereg("^(.+[0-9]),[0-9]{2}$",$campo)==false or preg_match($patron1,$campo)==true or preg_match($patron2,$campo)==true)
    if(ereg("^[0-9]{1,},[0-9]{2}$",$campo)==false or preg_match($patron1,$campo)==true or preg_match($patron2,$campo)==true)
    {
      $var="Ingrese solo valores Reales con dos decimales";
    }
  }
  return($var);
}

/// Validar D7
function validar_D7($campo)
{
  // D7=Cadena(512): Cadena de caracteres en alfabeto ASCII de longitud 512 sin los caracteres
  // no imprimibles

  //  $patron = "/^[\w\á\é\í\ó\ú\Á\É\Í\Ó\Ú\ñ\Ñ]+$/i";
  $var="";
  if($campo!="")
  {
    if (strlen($campo)>512)
    {
      //       $var="$texto Inválido";
      $var="Ingrese solo Cadena de caracteres de longitud 512 sin los caracteres no imprimibles";
    }
  }
  return($var);
}

/// Validar D8
function validar_D8($campo)
{
  // D8= Cadena(32) solo letras, -, espacio, : Cadena de caracteres en alfabeto ASCII de longitud
  // 32 donde solo se aceptan letras, guión, espacio y subrayado ({A..Z, a..z}[{?-?, ?espacio?,
  // ? ?})
  $var="";
  $patron = "/^[\w\-\s\_\á\é\í\ó\ú\Á\É\Í\Ó\Ú\ñ\Ñ\/.\']+$/i";
  $patron1 = "/[0-9]/";
  if($campo!="")
  {
    if (preg_match($patron,$campo) != 1 or strlen($campo)>32 or preg_match($patron1,$campo) == 1)
    {
      //       $var="$texto Inválido";
      $var="Ingrese solo caracteres de longitud 32 letras, - , _ , espacio :";
    }
  }
  return($var);
}

/// Validar D9
function validar_D9($campo)
{
  // D9=Cadena(128) letras, digitos, ' . - _ / º() : Cadena de caracteres en alfabeto ASCII de longitud
  // 128 donde solo se aceptan letras, nÂ´umeros, apÂ´ostrofe, punto, guiÂ´on, subrayado, barra
  // inclinada, espacio, parentesis y numeral ({A..Z, a..z}[{0..9}[{???, ?.?, ?-?, ? ?, ?/?, ?espacio?, ? ( )?, ??})
  $var="";
  $patron = "/^[\w\?\.\-\_\/\s\#\'\º\.\á\é\í\ó\ú\Á\É\Í\Ó\Ú\ñ\Ñ\,\(\)]+$/i";
  if($campo!="")
  {
    if (preg_match($patron,$campo) != 1 or strlen($campo)>128)
    {
      //       $var="$texto Inválido";
      $var="Ingrese solo caracteres de longitud 128 letras, digitos, ' , . , - , _ , / , º , :";
    }
  }
  return($var);
}

/// Validar D10
function validar_D10($campo)
{
  // D10=Cadena(32) solo dígitos, - y espacio: Cadena de caracteres en alfabeto ASCII de longitud
  // 32 donde solo se aceptan números, guión y espacio ({0..9}[{?-?, ?espacio?})
  $var="";
  $patron = "/^[\d\+\-\s\%]+$/i";
  if($campo!="")
  {
    if (preg_match($patron,$campo) != 1 or strlen($campo)>32)
    {
      //       $var="$texto Inválido";Ç
      $var="Ingrese solo números, +, -, % longitud máxima de 32 caracteres";
    }
  }
  return($var);
}

/// Validar D11
function validar_D11($campo)
{
  // D11=Cadena(64): Cadena de caracteres en alfabeto ASCII de longitud 64 sin caracteres no
  // imprimibles
  $var="";
  if($campo!="")
  {
    if (strlen($campo)>64)
    {
      //       $var="$texto Inválido";
      $var="Ingrese solo Cadenas de longitud 64 sin caracteres no imprimibles";
    }
  }
  return($var);
}

/// Validar D12
function validar_D12($campo)
{
  // D12= TimeStamp: Fecha y hora en formato TIMESTAMP '2004-10-19 10:23:54'
  // Valida solamente el formato de la hora 10:23
  $var="";
  $patron = "/^[\d\:]+$/i";
  $aux = split(":",$campo);
  if($campo!="")
  {
    if(ereg ( "^(.){2}:(.){2}$", $campo)==false or preg_match($patron,$campo) != 1 or $aux[0]>12  or $aux[1] > 60)
    {
      //       $var="$texto Inválido";
      $var="Ingrese Fecha y hora en formato 01-09-2006 10:23:54";
    }
  }
  return($var);
}

/// Validar D13
function validar_D13($campo)
{
  // D13= Cadena(16) dígitos y letras: Cadenas de caracteres de longitud 16 donde solo se
  // aceptan letras del alfabeto ASCII y nÂ´umeros ({0..9}[{A..Z, a..z})
  $var="";
  $patron = "/^[\w\á\é\í\ó\ú\Á\É\Í\Ó\Ú\ñ\Ñ]+$/i";
  if($campo!="")
  {
    if (preg_match($patron,$campo) != 1 or strlen($campo)>16)
    {
      //       $var="$texto Inválido";
      $var="Ingrese solo Cadenas de longitud 16, se aceptan letras y números ";
    }
  }
  return($var);
}

function validar_D14($campo)
{
  // D14=Cadena(128): Cadena de caracteres en alfabeto ASCII de longitud 128
  $var="";
  $patron = "/^[\w\s\á\é\í\ó\ú\Á\É\Í\Ó\Ú\ñ\Ñ]+$/i";
  //  $patron1 = "/[0-9]/";
  if($campo!="")
  {
    //    if (preg_match($patron,$campo) != 1 or strlen($campo)>128 or preg_match($patron1,$campo) == 1)
    if (preg_match($patron,$campo) != 1 or strlen($campo)>128)
    {
      //       $var="$texto Inválido";
      $var="Ingrese cadenas menores de 128 caracteres";
    }
  }
  return($var);
}

/// Validar D15
function validar_D15($campo)
// D15=EnteroCorto+: Entero de 16 bits siempre positivo (unsigned short int en C++)
{
  $var="";
  $patron = "^[[:digit:]]+$";
  $patron1 = "^[-]+$";
  if($campo!="")
  {
    if (eregi($patron, $campo)==false or $campo>2147483647 or eregi($patron1, $campo)==true)
    {
      //       $var="Ingrese en el campo <b>$texto</b> sólo enteros positivos";
      $var="Ingrese solo Entero postivo, y el número debe ser menor a 8 digitos";
    }
  }
  return($var);
}

/// Validar D16
function validar_D16($campo)
{
  // D16=Cadena(4) letras
  $var="";
  $patron = "/^[\w\á\é\í\ó\ú\Á\É\Í\Ó\Ú\ñ\Ñ]+$/i";
  if($campo!="")
  {
    if (preg_match($patron,$campo) != 1 or strlen($campo)>4)
    {
      //       $var="$texto Inválido";
      $var="Ingrese solo Cadenas de longitud 4";
    }
  }
  return($var);
}

// Validar D17
function validar_D17($campo)
{
  // D17=Cadena(64) letras, dígitos,., - , / ,@, : Cadena de caracteres en alfabeto ASCII de
  // longitud 64 donde solo se aceptan letras, números, punto, guión, barra inclinada, arroba,
  // espacio y subrayado ({A..Z, a..z}[{0..9}[{?.?, ?-?, ?/?, ?@?, ?espacio?, ? ?})
  $var="";
  $patron = "/^[\w\.\-\/\/@\s\_\á\é\í\ó\ú\Á\É\Í\Ó\Ú\ñ\Ñ]+$/i";
  if($campo!="")
  {
    if (preg_match($patron,$campo) != 1 or strlen($campo)>64)
    {
      //       $var="$texto Inválido";
      $var="Ingrese solo Cadenas de longitud 64 letras, digitos, . , - , / , @ , :";
    }
  }
  return($var);
}

// Validar D18
function validar_D18($campo)
{
  // D18=Cadena(12) solo dígitos: Cadena de caracteres en alfabeto ASCII de longitud 12 donde
  // solo se aceptan números ({0..9})
  $var="";
  $patron = "/[^0-9]/";
  if($campo!="")
  {
    if (preg_match($patron,$campo) == 1 or strlen($campo)>12)
    {
      //       $var="$texto Inválido";
      $var="Ingrese solo Cadenas de longitud 12, acepta solamente números";
    }
  }
  return($var);
}

/// Validar D19
function validar_D19($campo)
{
  // D19=Cadena(16): Cadena de caracteres en alfabeto ASCII de longitud 16
  $var="";
  $patron = "/[^a-zA-Z]/";
  if($campo!="")
  {
    if (preg_match($patron,$campo) == 1 or strlen($campo)>16)
    {
      //       $var="$texto Inválido";
      $var="Ingrese solo Cadenas de longitud 16";
    }
  }
  return($var);
}

/// Validar D20
function validar_D20()//$campo)
{
  // D20=D19 encriptado
  // Esta validación siempre retornará true
  //  $campo="";
  return true;//($campo);
}

/// Validar D21
function validar_D21($campo)
{
  // D21=Real: Numero de precision simple (flota en C++)
  $var="";
  //  $patron = "/[^a-zA-Z]/";
  //    if (preg_match($patron,$campo) != 1 or strlen($campo)>16)
  $patron = "^[[:digit:]]+$";
  if($campo!="")
  {
    if(eregi($patron, $campo)==false)
    {
      //       $var="$texto Inválido";
      $var="Ingrese solo números reales de precisión simple";
    }
  }
  return($var);
}

function validar_D22($campo)
{
  // D22=Cadena(256) letras, dígitos, espacio, guíon, coma, punto, dos puntos, barra inclinada
  // y subrayado ({A..Z, a..z}[{0..9}[{?.?, ?:?, ?-?, ?/?, ?,?, ?espacio?, ? ?})
  $var="";
  $patron = "/^[\w\.\:\-\/\,\s\_\á\é\í\ó\ú\Á\É\Í\Ó\Ú\ñ\Ñ]+$/i";
  if($campo!="")
  {
    if (preg_match($patron,$campo) != 1 or strlen($campo)>256)
    {
      //       $var="$texto Inválido";
      $var="Ingrese solo Cadenas de longitud 256 letras, digitos, espacio, - , . , ',' , : , /";
    }
  }

  return($var);
}

/// *******************   Validaciones Agregadas   *******************

/// Valida vacio
function validar_A1($campo)
{
  $var="";
  if ($campo=="")
  {
    //     $var="$texto";
    $var="Ingrese un valor";
  }
  return($var);
}

/// Validar Correo
function validar_A2($campo)
{
  // A2= Correo Electrónico
  $var="";
  //if(ereg ( "^(.+)@(.).(.)", $campo)==false)
  if($campo!="")
  {
    $patron = "/^[\w\_\@\.]+$/i";
    if (preg_match($patron,$campo) != 1 )
    {
      $var="Caracteres inválidos, sólo se permiten letras, números, _, . y @";
    }
    if(ereg ( "^(.+)@(.+)\.(.+)", $campo)==false)
    {
      $var="Correo Electronico no válido";
    }
  }
  return($var);
}

/// Valida combo en 'seleccione'
function validar_A3($campo)
{
  $var="";
  $aux=strpos($campo,"Seleccione");
  if($aux==false)
  {
    $var="Seleccione el Item";
  }
  return($var);
}

/// Valida contraseñas
function validar_A4($campo) {
  return ( $campo == "") ? "Contraseñas Diferentes" : "";
}

/// Validar A5 valida login
function validar_A5($campo)
{
  // A5= Cadena(16) dígitos y letras: Cadenas de caracteres de longitud 16 donde solo se
  // aceptan letras del alfabeto ASCII y numeros ({0..9}[{A..Z, a..z}{_})
  $var="";
  $patron = "/^[\w\ñ\Ñ\_\.]+$/i";
  if($campo!="")
  {
    if (preg_match($patron,$campo) != 1 or strlen($campo)>16)
    {
      //       $var="$texto Inválido";
      $var="Ingrese solo Cadenas de longitud 16, se aceptan letras '_', '.' y números ";
    }
  }
  return($var);
}

/// Validar A6
function validar_A6($campo)
{
  // A6= Cadena(16) dígitos y letras: Cadenas de caracteres de longitud 16 donde solo se
  // aceptan letras del alfabeto ASCII y nÂ´umeros ({0..9}[{A..Z, a..z}{espacio}{_}{-})
  $var="";
  $patron = "/^[\w\s\á\é\í\ó\ú\Á\É\Í\Ó\Ú\ñ\Ñ\-\_]+$/i";
  if($campo!="")
  {
    if (preg_match($patron,$campo) != 1 or strlen($campo)>16)
    {
      //       $var="$texto Inválido";
      $var="Ingrese solo Cadenas de longitud 16, se aceptan letras, números '-', '_', espacio ";
    }
  }
  return($var);
}

/// Validar A7
function validar_A7($campo)

{
  // A7= Cadena sin "?" presentes
  $var="";
  //  $patron = "/^[\a]+$/i";

  if($campo!="")
  {
    $aux=strpos($campo,"?");
    if($aux > -1)
    {
      $var="Seleccione los par&#225;metros del Rombo";
    }
  }
  return($var);
}

/// Validar A8
function validar_A8($campo)
{
  // A8=solo dígitos y punto, ({0..9}[{.})
  $var="";
  $patron = "/^[\d\.]+$/i";
  if($campo!="")
  {
    if (preg_match($patron,$campo) != 1)
    {
      //       $var="$texto Inválido";Ç
      $var="Ingrese solo números reales positivos";
    }
  }
  return($var);
}

/// Validar A9
function validar_A9($campo)
{
  // A9=Cadena(20) digitos y letras mayusculas: Cadenas de caracteres de longitud 20 donde solo
  // se aceptan letras mayusculas del alfabeto ASCII y numeros ({0..9}[{A..Z})
  $var="";
  $patron = "/[a-z]/";
  $patron1 = "/^[\w\á\é\í\ó\ú\Á\É\Í\Ó\Ú\ñ\Ñ\-]+$/i";
  if($campo!="")
  {
    if (preg_match($patron,$campo) == 1 or strlen($campo)>20 or preg_match($patron1,$campo) != 1)
    {
      //         $var="$texto Inválido";
      $var="Ingrese solo caracteres de longitud 20 digitos y letras en mayúsculas";
    }
  }
  return($var);
}

/// Validar pagina web
function validar_A10($campo)
{
  // A10= Pagina web
  $var="";
  $patron1 = "/^[\w\ñ\Ñ\-\:\/\.\~]+$/i";
  if($campo!="")
  {
    if(ereg ( "^http[s]?://(.+)\.(.+)", $campo)==false)
    {
      $var="Página web inválida";
    }
    else
    {
      if(preg_match($patron1,$campo) != 1)
      {
        $var="Se han ingresado caracteres inválidos";
      }
    }
  }
  return($var);
}

/// Validar numero telefonico
function validar_A11($campo)
{
  $var="";
  $patron = "/^[\d\+\-]+$/i";
  if($campo!="" || $campo!=null)
  {
    $cant = count(split('-',$campo));
    if ($cant==2)
    {
      if(ereg("^[0-9]{4}-[0-9]{7}$",$campo)==false or preg_match($patron,$campo) != 1)
      { $var="Teléfono inválido. Formatos validos: 0274-2548796/ +58-274-2548796/ 0058-274-2548796"; }
    }
    else
    {
      if(strpos($campo,'+')===0)
      {
        if(ereg("^[+]{1}[0-9]{2}-[0-9]{3}-[0-9]{7}$",$campo)==false or preg_match($patron,$campo) != 1)
        { $var="Teléfono inválido. Formatos validos: 0274-2548796/ +58-274-2548796/ 0058-274-2548796"; }
      }
      else
      {
        if(ereg("^[0-9]{4}-[0-9]{3}-[0-9]{7}$",$campo)==false or preg_match($patron,$campo) != 1)
        { $var="Teléfono inválido. Formatos validos: 0274-2548796/ +58-274-2548796/ 0058-274-2548796"; }

      }
    }
  }
  return($var);
}


/// Valida que fecha1 sea mayor o igual que la fecha actual
function validar_A12($fecha1)
{
  // A12 = fecha1 sea mayor o igual que la fecha actual
  $var = "";
  $fecha2 = Fecha::hoy(1);
  if (preg_match("/[0-9]{1,2}\/[0-9]{1,2}\/([0-9][0-9]){1,2}/",$fecha1))
  list($dia1,$mes1,$año1)=split("/",$fecha1);
  if (preg_match("/[0-9]{1,2}-[0-9]{1,2}-([0-9][0-9]){1,2}/",$fecha1))
  list($dia1,$mes1,$año1)=split("-",$fecha1);
  if (preg_match("/[0-9]{1,2}\/[0-9]{1,2}\/([0-9][0-9]){1,2}/",$fecha2))
  list($dia2,$mes2,$año2)=split("/",$fecha2);
  if (preg_match("/[0-9]{1,2}-[0-9]{1,2}-([0-9][0-9]){1,2}/",$fecha2))
  list($dia2,$mes2,$año2)=split("-",$fecha2);
  $dif = mktime(0,0,0,$mes1,$dia1,$año1) - mktime(0,0,0, $mes2,$dia2,$año2);
  if ($dif<0) {
    $var="La fecha debe ser mayor o igual a la fecha actual";
  }
  return ($var);
}

/// Valida que el codigo del proyecto sea correcto
function validar_A13($campo)
{
  // A13= Pagina web
  $var="";
  if($campo!="")
  {
    //    if(ereg("^[+]{1}[0-9]{2}-[0-9]{3}-[0-9]{7}$",$campo)==false)
    if(ereg ( "^SGLG-[0-9]", $campo)==false)
    { $var="Código inválido. Formato: SGLG-XXX, donde XXX son números enteros positivos"; }
  }
  return($var);
}

/// Validar A14
function validar_A14($campo)
{
  // A14= Cadena(32) solo letras,  espacio, : Cadena de caracteres en alfabeto ASCII de longitud
  // 32 donde solo se aceptan letras, espacio y tílde ({A..Z, a..z}[{?'?, ?espacio?)
  $var="";
  //  $patron = "/^[A-Za-z\s\á\é\í\ó\ú\Á\É\Í\Ó\Ú\ñ\Ñ\']+$/i";
  $patron = "/^[\A-Za-z\á\é\í\ó\ú\Á\É\Í\Ó\Ú\ñ\Ñ\'\s]+$/i";
  $patron1 = "/[0-9]/";
  if($campo!="")
  {
    if (preg_match($patron,$campo) != 1 or strlen($campo)>32 or preg_match($patron1,$campo) == 1)
    {
      //       $var="$texto Inválido";
      $var="Ingrese solo caracteres de longitud 32 letras, ' , espacio :";
    }
  }
  return($var);
}

/// Validar A15
function validar_A15($campo)
{
  // A15= Letras, numeros, espacio, parentesis, -, ', _: ({A..Z, a..z}{0-9}[{?'?, ?espacio?, ?-?, ?_?, ?()?)
  $var="";
  $patron = "/^[\A-Za-z0-9\á\é\í\ó\ú\Á\É\Í\Ó\Ú\ñ\Ñ\´\_\-\,\.\/(\/)\s]+$/i";
  if($campo!="")
  {
    if (preg_match($patron,$campo) != 1)
    {
      $var="Ingrese solo caracteres de Letras, numeros, espacio, parentesis, -, ´, _";
    }
  }
  return($var);
}

/// Valida que fecha1 sea menor o igual que la fecha actual
function validar_A16($fecha1)
{
  // A12 = fecha1 sea igual o menor que la fecha actual
  $var = "";
  $fecha2 = Fecha::hoy(1);
  if (preg_match("/[0-9]{1,2}\/[0-9]{1,2}\/([0-9][0-9]){1,2}/",$fecha1))
  list($dia1,$mes1,$año1)=split("/",$fecha1);
  if (preg_match("/[0-9]{1,2}-[0-9]{1,2}-([0-9][0-9]){1,2}/",$fecha1))
  list($dia1,$mes1,$año1)=split("-",$fecha1);
  if (preg_match("/[0-9]{1,2}\/[0-9]{1,2}\/([0-9][0-9]){1,2}/",$fecha2))
  list($dia2,$mes2,$año2)=split("/",$fecha2);
  if (preg_match("/[0-9]{1,2}-[0-9]{1,2}-([0-9][0-9]){1,2}/",$fecha2))
  list($dia2,$mes2,$año2)=split("-",$fecha2);
  $dif = mktime(0,0,0,$mes1,$dia1,$año1) - mktime(0,0,0, $mes2,$dia2,$año2);
  if ($dif>0) {
    $var="La fecha debe ser igual o menor que la fecha actual";
  }
  return ($var);
}

function validar_T1($campo)
{
  // T1=Cadena(16) de longitud 16
  $var="";
  if($campo!="")
  {
    if (strlen($campo)>16)
    {
      $var="Ingrese cadenas de longitud máxima igual a 16";
    }
  }
  return($var);
}

function validar_T2($campo)
{
  // T2=Cadena(32) de longitud 32
  $var="";
  if($campo!="")
  {
    if (strlen($campo)>32)
    {
      $var="Ingrese cadenas de longitud máxima igual a 32";
    }
  }
  return($var);
}

function validar_T3($campo)
{
  // T3=Cadena(64) de longitud 64
  $var="";
  if($campo!="")
  {
    if (strlen($campo)>64)
    {
      $var="Ingrese cadenas de longitud máxima igual a 64";
    }
  }
  return($var);
}

function validar_T4($campo)
{
  // T4=Cadena(128) de longitud 128
  $var="";
  if($campo!="")
  {
    if (strlen($campo)>128)
    {
      $var="Ingrese cadenas de longitud máxima igual a 128";
    }
  }
  return($var);
}

function validar_T5($campo)
{
  // T5=Cadena(256) de longitud 256
  $var="";
  if($campo!="")
  {
    if (strlen($campo)>256)
    {
      $var="Ingrese cadenas de longitud máxima igual a 256";
    }
  }
  return($var);
}
?>